/*******************************************************************************************
 *      @name   fopen_demo.c
 *      @brief  这是标准C库中打开文件的函数fopen的代码案例，主要学习fopen函数的调用
 *      @date   2025/01/03 
 *      @author boluzs@163.com
 *      @note
 *          1. linux内核会为每个打开的文件申请一块堆内存，用于记录文件的信息
 *          2. 在对文件访问完成后，需要调用fclose函数关闭文件的，这样堆内存就会被释放
 *          3. 每打开一个文件，则linux内核就会把堆内存作为一个结点加入到链表中
 *          4. 如果对打开的同一个文件进行多次关闭，就会出现重复释放堆内存的动作，会段错误！
 * 
 *      @version  xx.xx.xx   主版本号.次版本号.修正版本号
 * 
 *      CopyRight (c)   2024-2025   Your Name     All Right Reserved
 * 
 * ****************************************************************************************/

#include <stdio.h>
#include <errno.h>
#include <string.h>
#include <stdlib.h>

int main()
{
    //1.利用fopen函数打开一个文件，如果不存在就创建，如果文件存在，则以二进制文件的追加方式打开
    FILE * fp = fopen("./log.txt","a+b");

    //错误处理
    if(NULL == fp)
    {
        fprintf(stderr,"open error,errno = %d,%s\n",errno,strerror(errno));
        exit(-1);
    }

    //2.关闭文件
    fclose(fp);
    fclose(fp); //如果对同一个文件反复关闭多次，则相当于把已经释放的堆内存再次释放，会段错误！！

    return 0;
}